package models

import (
	"context"
	"time"
)

// OrderItem 订单商品表
type OrderItem struct {
	Id           int64     `json:"id" xorm:"pk autoincr"`
	OrderId      int64     `json:"order_id" xorm:"not null comment('订单ID') index"`
	ProductId    string    `json:"product_id" xorm:"not null comment('商品ID') index"`
	SkuId        string    `json:"sku_id" xorm:"not null comment('SKU ID') index"`
	ProductName  string    `json:"product_name" xorm:"varchar(255) not null comment('商品名称')"`
	SkuName      string    `json:"sku_name" xorm:"varchar(255) not null comment('SKU名称')"`
	ProductImage string    `json:"product_image" xorm:"varchar(255) not null comment('商品图片')"`
	Quantity     int       `json:"quantity" xorm:"not null default 1 comment('商品数量')"`
	Price        float64   `json:"price" xorm:"decimal(10,2) not null comment('商品单价')"`
	TotalAmount  float64   `json:"total_amount" xorm:"decimal(10,2) not null comment('商品总价')"`
	UpdateTime   time.Time `json:"update_time" xorm:"not null updated comment('更新时间')"`
	CreateTime   time.Time `json:"create_time" xorm:"not null created comment('创建时间')"`
}

// TableName 表名
func (OrderItem) TableName() string {
	return "order_item"
}

// OrderItemFindByIds 根据ID列表查询
func OrderItemFindByIds(ctx context.Context, ids []int64) (data []*OrderItem, err error) {
	err = getSession(ctx).In("id", ids).Find(&data)
	return
}

// OrderItemFindByOrderIds 根据订单ID列表查询
func OrderItemFindByOrderIds(ctx context.Context, orderIds []int64) (data []*OrderItem, err error) {
	err = getSession(ctx).In("order_id", orderIds).Find(&data)
	return
}

// OrderItemFindOne 根据条件查询单条
func OrderItemFindOne(ctx context.Context, id int64) (data *OrderItem, err error) {
	data = new(OrderItem)
	_, err = getSession(ctx).ID(id).Get(data)
	return
}
